Multi-channel adaptive filtering

ABSTRACT

A multi-channel adaptive filter system for use, for example, in echo cancellation for generating an echo estimate for each channel is described. The system includes a forward and backward prediction filter parameter generator that in response to the multi-channel inputs generates a single forward prediction filter vector signal {right arrow over (ω)} p−1 (n) and corresponding single forward error F(n) signal and a single backward prediction filter vector signal {right arrow over (ν)} p−1 (n) and corresponding single backward error signal B(n). The system further includes an error generator responsive to errors in the estimated signal for multiplying the errors by a 1-μ where μ is a constant for generating error vector signals {right arrow over (e)} i.p -{right arrow over (e)} J,p (n) for each channel. A signal generator coupled to the forward and backward prediction filter generator and the error generator for generating vector signals gi,p(n)-gJ,P(n) which are multiplied by adaptation constant to produce pre-filter coefficients. An adaptive filter output generator coupled to said multi-channel input signals and responsive to pre-filter coefficients for providing an echo estimate signal for each of the channels.

This application claims priority under 35 USC §119(e)(1) of provisional application No. 60/080,188, filed Mar. 24, 1998.

FIELD OF THE INVENTION

This invention relates to adaptive filtering and more particularly to multi-channel adaptive filtering.

BACKGROUND OF THE INVENTION

Multi-channel adaptive filtering appears in several applications like stereophonic or multi-channel acoustic echo cancellation for audio/video conferencing, active noise control, multi-channel equalization, etc. See, for example, “Acoustic Echo Cancellation System” of Murtaza Ali for which a provisional application Ser. No. 09/261,913 was filed Mar. 3, 1998. This application is incorporated herein by reference. Specially in acoustic echo cancellation and active noise control, the input is not necessarily white (without speech). In such cases, the least mean squares technique has poor convergence rate. On the other hand, the number of filter taps is also very high to allow fast recursive least square (FRLS) like techniques due to high computational complexity (e.g., in multi-channel audio-conferencing, the filter may have thousands of taps). In single channel cases, a class of techniques known as the affine projection algorithm and its fast version have been developed that have low complexity and fast convergence. See Y. Kaneda, M. Tanaka and J. Kojina, “An Adaptive Algorithm with Fast Convergence for Multi-Input Sound Control,” ACTIVE-95, pp. 993-1004, Newport Beach, Calif., July 1995; and S. Gay and S. Tavathia, “The Fast Affine Projection Algorithm,” Proceedings of ICASSP-95, pp. 3023-3026, 1995. Also see Gay U.S. Pat. No. 5,428,562 incorporated herein by reference.

SUMMARY OF THE INVENTION

In accordance with one embodiment of the present invention a multi-channel filter system for generating an estimated signal for each channel comprises a forward and backward prediction filter generator responsive to multi-channel input signals for generating a single forward prediction vector signal and a corresponding forward error signal and a single backward prediction vector signal and a corresponding backward error signal. An error generator responsive to errors in the estimated signal multiplies the errors by 1-μ for generating error vectors. A pre-filter signal generator responsive to the single forward filter vector signal and corresponding forward error and the single backward filter vector signal and corresponding backward error signal and said error vectors for generating pre-filter coefficients. An adaptive filter output generator coupled to said pre-filter generator and responsive to said pre-filter coefficients and said multi-channel input signals for generating an estimate signal for each channel.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a prior art stereophonic echo cancellation system;

FIG. 2 illustrates a multi-channel adaptive filtering system with channels;

FIG. 3a illustrates forward predictor structures used in a single channel FRLS and fast affine projection techniques;

FIG. 3b illustrates two-channel fast FRLS technique as illustrated in FIG. 1;

FIG. 3c illustrates two-channel fast affine projection technique;

FIG. 4a illustrates the structure of predictors for the i^(th) channel forward predictor;

FIG. 4b illustrates the structure of predictors for the i^(th) channel backward predictor;

FIG. 5 is a system diagram of the multi-channel adaptive filter system in an echo canceling system;

FIG. 6 illustrates {right arrow over (g)}_(i,p)(n) signal generator in FIG. 5;

FIG. 7 illustrates error vector {right arrow over (e)}_(i,p)(n) signal generator in FIG. 5;

FIG. 8 illustrates pre-filter {right arrow over (s)}_(i,p)(n) signal generator in FIG. 5;

FIG. 9 illustrates adaptive filter output generator in FIG. 5;

FIG. 10 illustrates auto correlation vector r_(i,p−1)(n) generator for the i^(th) channel;

FIG. 11 illustrates filter with {right arrow over (Z)}_(i,j)(n) and update of {right arrow over (Z)}_(i,j)(n);

FIG. 12 illustrates filter with {right arrow over (Z)}_(i,j)(n);

FIG. 13 illustrates update of {right arrow over (Z)}_(i,j)(n);

FIG. 14 illustrates forward and backward filter parameter generators;

FIG. 15 illustrates forward prediction filter parameter generation;

FIG. 16 illustrates forward prediction filtering;

FIG. 17 illustrates Operation of V;

FIG. 18 illustrates backward prediction filter parameter generation;

FIG. 19 illustrates backward prediction filtering;

FIG. 20 illustrates generation of M(n) and {right arrow over (m)}(n); and

FIG. 21 illustrates behavior of misalignment with time for normalized LMS and the fast multi-channel affine projection technique for orders 4 and 8.

DESCRIPTION OF PREFERRED EMBODIMENTS OF THE PRESENT INVENTION

FIG. 1 shows the configuration of a typical stereophonic echo cancellation system 10. The transmission room (depicted on the left) 11 has two microphones 13 and 15 that pick up the speech signal, x, via the two acoustic paths characterized by the impulse responses, g₁ and g₂. All acoustic paths are assumed to include the microphone and/or loudspeaker responses. The i^(th) microphone output is then given by (in the frequency domain)

X _(i)(ω)=G _(i)(ω)X(ω).  (1)

In this application, the upper-case letters represent the Fourier transforms of the time-domain signals denoted by the corresponding lower-case letters. The whole system is considered as a discrete-time system ignoring any A/D or D/A converter. These signals are presented through the set of loudspeakers 27 and 29 in the receiving room 21 (on the right in FIG. 1). Each microphone 23 and 25 in the receiving room picks up an echo (y₁, y₂ in FIG. 1) from each of the loudspeakers. Let ĥ_(ij) be the acoustic path impulse response from the J^(th) loudspeaker to the i^(th) microphone. In FIG. 1 the path from speaker 27 to microphone 23 is ĥ₁₁, the path from speaker 27 to microphone 25 is ĥ₂₁, the path from speaker 29 to microphone 25 is ĥ₂₂ and from speaker 29 to microphone 23 is ĥ₁₂. Then the echoes (ŷ₁,ŷ₂) picked up by the microphones 23 and 25 in the receiving room 21 are given by (in the frequency domain) $\begin{matrix} {{Y_{i}(\omega)} = {\sum\limits_{j}{{H_{ij}(\omega)}{X_{j}(\omega)}}}} & (2) \end{matrix}$

In the absence of any AEC, the echoes ŷ_(i)'s will be passed back to the loudspeaker 17, 19 in the transmission room 11 and will be recirculated again and again. This will cause multiple echoes or may even result in howling instability. Commonly used AEC systems use adaptive finite impulse response (FIR) filters that provide estimates of the echo path responses. The FIR filter coefficients are updated adaptively depending on the input signals to the loudspeaker and the outputs of the microphones.

In the stereophonic AEC, there are four echo paths (ĥ₁₁,ĥ₁₂,ĥ₂₁ and ĥ₂₂) to be identified. We, therefore, need four adaptive filters 31-34 as shown in FIG. 1. Filter 31 is the estimate for the ĥ₁₁ path, filter 32 is the estimate for the ĥ₁₂, path, filter 33 is the estimate for the ĥ₂₁ path and filter 34 is the estimate for the ĥ₂₂ path. The estimates ĥ₁₁ and ĥ₁₂ of paths to echo y₁ are summed at 37 and the estimates h₂₁ and h₂₂ of paths to echo y₂ are summed at 38. The output of the AEC filters (which can be thought of as an estimated echo) are as follows ${Y_{i}(\omega)} = {\sum\limits_{j}{{H_{ij}(\omega)}{X_{j}(\omega)}}}$

These estimated echoes at 37 and 38 are subtracted at adders 35 and 36 from the true echoes from ŷ₁ and ŷ₂ giving the error signals (e₁ and e₂ in FIG. 1),

E _(i)(ω)=Ŷ _(i)(ω)−Y _(i)(ω)

These error signals are used to update the filter 31-34 coefficients (represented by feedback lines 41,42). Several techniques are available to calculate the filter updates (e.g., the least means square (LMS), the recursive least square (RLS), the affine projection (AP) algorithms, etc.). All these techniques attempt to minimize these error signals in one way or another.

FIG. 2 shows a multi-channel adaptive filtering system with J inputs (X₁-X_(j)) and J outputs (Y₁-Y_(j)). The input to the i^(th) channel is X_(i), the response from the i^(th) input to the J^(th) output is represented by ĥ_(j,i) and ŷ_(i) is the i^(th) output. In the adaptive system (lower half of FIG. 2), the response from the i^(th) input to the j^(th) output is modeled by the finite impulse response (FIR) filter h_(j,i) (like filters 31-34 in FIG. 1) with y_(i) being i^(th) output of the multi-channel (MC) adaptive filtering system. The errors e_(i)'s (e₁-e_(j)) are used to update the adaptive filters h_(j,i) (like 31-34). We assume here that the length of the adaptive filters be L.

The basic affine projection technique for MC adaptive filtering is presented in Table 1.

TABLE 1 ${{\overset{\rightarrow}{e}}_{i,p}(n)} = {{{\overset{\rightarrow}{y}}_{i,p}(n)} - {\sum\limits_{j = 1}^{J}{{X_{j,p}^{T}(n)}{{\overset{\rightarrow}{h}}_{i,j}(n)}}}}$

(3.1) ${{\overset{\rightarrow}{g}}_{i,p}(n)} = {\left\lbrack {\sum\limits_{j = 1}^{J}{{X_{j,p}^{T}(n)}{X_{j,p}(n)}}} \right\rbrack^{- 1}{{\overset{\rightarrow}{e}}_{i,p}(n)}}$

(3.2) ${{\overset{\rightarrow}{h}}_{i,j}\left( {n + 1} \right)} = {{{\overset{\rightarrow}{h}}_{i,j}(n)} + {{{\mu X}_{j,p}(n)}{{\overset{\rightarrow}{g}}_{i,p}(n)}}}$

(3.3)

Here ${{\overset{\rightarrow}{e}}_{i,p}(n)} = \begin{bmatrix} {e_{i}(n)} \\ {e_{i}\left( {n - 1} \right)} \\ {e_{i}\left( {n - p + 1} \right)} \end{bmatrix}$

is a p dimensional vector consisting of the p past a-priori errors of the i^(th) channel. Similarly, the vectors {right arrow over (y)}_(i,p)(n) and {right arrow over (x)}_(i,L)(n) consist of p past outputs and L past inputs respectively each corresponding to the i^(th) channel, i.e., ${{\overset{\rightarrow}{y}}_{i,p}(n)} = {{\begin{bmatrix} {y_{i}(n)} \\ {y_{i}\left( {n - 1} \right)} \\ \ldots \\ {y_{i}\left( {n - p + 1} \right)} \end{bmatrix}\quad {and}\quad {{\overset{\rightarrow}{x}}_{i,L}(n)}} = \begin{bmatrix} {x_{i}(n)} \\ {x_{i}\left( {n - 1} \right)} \\ \ldots \\ {x_{i}\left( {n - L + 1} \right)} \end{bmatrix}}$

Then, X_(j,p)(n) is defined as the L×p data matrix

X _(i,p)(n)=[{right arrow over (x)} _(j,L)(n){right arrow over (x)} _(j,L)(n−1) . . . {right arrow over (x)} _(j,L)(n−p+1)]

The MCAP technique ensures that the filter update vector with μ=1 is the minimum norm solution that results in zero a-posteriori error in the past p time instances in all the channels. p is called the projection order. p is in general between 1 to 64. In general, the higher the value of p, the better is the convergence and the lower is the final error. μ is called the adaptation constant. It can be used to some degree to control convergence rate and final error. Usually higher μ results in faster convergence but higher final error. Typical values of μ lie in the range of 0.1 to 1.0. The computational complexity in terms of the number of multiply-accumulate (MAC) operations of the MC affine projection technique as given above is extremely high (J²Lp for each of the equations 3.1 and 3.3 and O(Jp³) for the matrix inversion in equation 3.2 resulting in a total complexity of 2J²Lp+O(Jp³)).

A fast version for the multi-channel affine projection technique is presented in Table 2. This was disclosed by Kaneda et al. In this fast version, the adaptive filter coefficient {right arrow over (h)}_(i,j)(n) is not updated directly. Rather the vector {right arrow over (z)}_(i,j)(n)

TABLE 2 Update auto-correction vector: {right arrow over (r)}_(i,p−1)(n) = {right arrow over (r)}_(i,p−1)(n − 1) + x_(i)(n){right arrow over (x)}_(i,p−1)(n − 1) − x_(i)(n − L){right arrow over (x)}_(i,p−1)(n − 1 − L) Update error vector: ${e_{i,1}(n)} = {{y_{i}(n)} - {\sum\limits_{j = 1}^{J}\left\lbrack {{{{\overset{\rightarrow}{r}}_{j,{p - 1}}^{T}(n)}{{\overset{\rightarrow}{s}}_{i,{p - 1}}(n)}} + {{{\overset{\rightarrow}{x}}_{j}^{T}(n)}{{\overset{\rightarrow}{z}}_{i,j}(n)}}} \right\rbrack}}$

(3.4) ${{\overset{\rightarrow}{e}}_{i,p}(n)} = \begin{bmatrix} {e_{i,1}(n)} \\ {\left( {1 - \mu} \right){{\overset{\rightarrow}{e}}_{i,{p - 1}}\left( {n - 1} \right)}} \end{bmatrix}$

(3.5) Update pre-filtering vector; {right arrow over (g)}_(i,p)(n) = [R_(p)(n)]⁻¹{right arrow over (e)}_(i,p)(n) (3.6) ${{\overset{\rightarrow}{s}}_{i,p}(n)} = {\begin{bmatrix} 0 \\ {{\overset{\rightarrow}{s}}_{i,{p - 1}}\left( {n - 1} \right)} \end{bmatrix} + {\mu \quad {{\overset{\rightarrow}{g}}_{i,p}(n)}}}$

(3.7) Update approximation vector: {right arrow over (z)}_(i,j)(n + 1) = {right arrow over (z)}_(i,j)(n) + {right arrow over (x)}_(j)(n − p + 1)s_(i,p)(n) (3.8) Here, ${R_{p}(n)} = {\sum\limits_{j = 1}^{J}\left\lbrack {{X_{j,p}^{T}(n)}{X_{j,p}(n)}} \right\rbrack}$

(3.9) s_(i,l)(n) = [s_(i,1)(n), s_(i,2)(n), . . ., s_(i,l)(n)]^(τ) (3.10) e_(i,l)(n) = [e_(i,l)(n), e_(i,2)(n), . . ., e_(i,l)(n)]^(τ) (3.11)

is updated. This vector is called the approximation vector as it contains contribution to {right arrow over (h)}_(i,j)(n) of data vectors up to time instant n−p. The contribution of data vectors from time instants n−p+1 to n is contained in the pre-filtering vector {right arrow over (g)}_(i,p)(n). This pre-filtering vector is used to update the vector {right arrow over (s)}_(i,p)(n) in equation 3.7 which is, in turn, used in equation 3.4 to calculate the a priori error e_(i,1)(n) and in equation 3.8 to update {right arrow over (z)}_(i,j)(n). The update of {right arrow over (g)}_(i,p)(n) in equation 3.6 requires inversion of the matrix R_(p)(n) as defined in equation 3.9. The computational complexity of the technique shown in equations 3.4-3.11 of Table 2 is as follows: J²(p+L) for equation 3.4, J²L for equation 3.8, O(Jp³) for equation 3.6 and 4Jp for the rest of the equations. The total complexity is then 2J²L+(J²+4J)p+O(Jp³). The technique disclosed in Kaneda et al. cited above suggests the use of matrix inversion lemma to calculate the update of R_(p) ⁻¹(n) from R_(p) ⁻¹(n−1) thereby reducing the complexity from O(Jp³) to O(Jp²) for solving equation 3.6. The complexity then reduces to 2J²L+(J²+8J)p+4Jp², i.e., the complexity is linear in L, the length of the adaptive filters but still quadratic in p, the projection order. The proposed technique in this application further reduces this complexity to be linear in both L and p.

The technique described in this application is based on forward and backward linear predictors. See S. Haykin, Adaptive Filter Theory, Prentice-Hall New Jersey, 1986. These predictors are also used in Gay et al. cited above to obtain fast affine projection technique for single channel case. In fact, the two techniques in Kaneda et al. and Gay et al. are very similar. They only differ in the way equation 3.6 in Table 2 is calculated. The technique in Kaneda et al. uses matrix inversion lemma and that in Gay et al. uses forward and backward linear predictors. The technique in Kaneda et al. can be directly extended to multi-channel affine projections. However, in order to extend the predictor based approach used in Gay et al., applicants teach to redefine the forward and backward linear predictors.

For single channel (e.g., only channel 1 exists in FIG. 2, the p×p matrix R=R₁₁=X_(1,p) ^(T(n))X_(1,p)(n) can be efficiently inverted by defining a forward linear predictor {right arrow over (ω)} of length p−1. This filter predicts x₁(n) from the p−1 past data x₁(n−1), x₁(n−2), . . . , x₁(n−p+1) (i.e., minimizes E[(x(n)−{right arrow over (x)}_(1,p−1) ^(T)(n−1){right arrow over (ω)})²])(see FIG. 3(a)) and a backward linear predictor {right arrow over (ν)} of length p−1 that predicts x₁(n−p+1) from the p−1 future data x₁(n),x₁(n−2) . . . x₁(n−p+2). Similar techniques are also used in Levinson-Durby algorithm for inverting auto-correlation matrices (see Haykin cite above) as well as in Fast Recursive Least Squares Technique (FRLS) for adaptive filtering (see J. M. Cioffi and T. Kailath, “Windowed Fast Transversal Filters Adaptive Algorithms with Normalization,” IEEE Transactions on Acoustics, Speech and Signal Processing, Vol. ASSP-33, No. 3, June 1985. We note here that multi-channel FRLS exists and uses a total of J² forward linear predictors (see FIG. 3(b) for J=2) and another J² backward predictors. These predictors are useful in inverting matrices of form $R = {\begin{bmatrix} R_{11} & R_{12} \\ R_{21} & R_{22} \end{bmatrix}.}$

For the case under consideration, we have to invert a matrix of form R=[R₁₁+R₂₂]. In this case, the predictors shown in FIG. 3(b) cannot be used. These predictors use cross-predictors as well as self-predictors to predict the current value (for the forward linear predictor) of particular channel from the past values of all the input channels and the minimization of the output error for a given output channel can be done independent of the other output channels. However, for inverting R=[R₁₁+R₂₂], we need the structure of predictors as shown in FIG. 3(c). The peculiarity of these predictors is that we do not have any cross-channel. On the other hand, we are constrained to use the same predictor for all the channels. The combined output energy of all the channels are to be minimized to arrive at the required predictor. Based on this definition, we will now derive the required algorithm for the applicant's novel fast affine projection technique. In particular, we shall show how these predictors can be used to obtain update of {right arrow over (g)}_(i,p)(n)(see equation 3.6) in O(Jp) operations.

The structure for the forward predictor is shown in FIG. 4(a). The error in the i^(th) forward prediction filter at time instant n given by ${{\overset{\rightarrow}{\omega}}_{p - 1}(n)} = \begin{bmatrix} {\omega_{1}(n)} \\ {\omega_{2}(n)} \\ \ldots \\ {\omega_{p - 1}(n)} \end{bmatrix}$

 f _(i)(j)=x(j)−{right arrow over (ω)}_(i,p−1)(n)^(T) {right arrow over (x)} _(i,p−1)(j−1).

The predictor {right arrow over (ω)}_(p−1)(n) (a p−1×1 dimensional vector) is chosen in such a way that minimizes the error criterion (squared error of all channels within a data window of length equal to the size of the adaptive filters) $\begin{matrix} {{J_{f}(n)} = {\overset{J}{\sum\limits_{i = 1}}{\overset{L - 1}{\sum\limits_{k = 0}}\quad {{f_{i}^{2}\left( {n - k} \right)}.}}}} & \text{(4.12)} \end{matrix}$

Minimizing the above leads to the solution

{right arrow over (ω)}_(p−1)(n)=R _(p−1) ⁻¹(n−1){right arrow over (r)}_(p−1)(n)  (4.13)

where $\begin{matrix} \begin{matrix} {{{R_{p - 1}\left( {n - 1} \right)} = {\sum\limits_{i = 1}^{J}{\sum\limits_{k = 0}^{L - 1}{{{\overset{\rightarrow}{x}}_{i,{p - 1}}\left( {n - k - 1} \right)}{{\overset{\rightarrow}{x}}_{{i.p} - 1}^{T}\left( {n - k - 1} \right)}}}}},} \\ {{{{\overset{\rightarrow}{r}}_{p - 1}(n)} = {\sum\limits_{i = 1}^{J}{{\overset{\rightarrow}{r}}_{{i.p} - 1}(n)}}},} \\ {{{\overset{\rightarrow}{r}}_{{i.p} - 1}(n)} = {\sum\limits_{k = 0}^{L - 1}{{x_{i}\left( {n - k} \right)}{{{\overset{\rightarrow}{x}}_{i,{p - 1}}\left( {n - k - 1} \right)}.}}}} \end{matrix} & \text{(4.14)} \end{matrix}$

The least squared error for this optimum forward filter can be written as (from equation 4.12)

F(n)=r ₀(n)−{right arrow over (r)}_(p−1) ^(T)(n){right arrow over (ω)}_(p−1)(n)  (4.15)

where  (4.16)

$\begin{matrix} {{r_{0}(n)} = {\sum\limits_{i = 1}^{J}{\sum\limits_{k = 0}^{L - 1}{{x_{i}^{2}\left( {n - k} \right)}.}}}} & \text{(4.17)} \end{matrix}$

Equations 4.13 and 4.15 can be combined in the following matrix vector equation $\begin{matrix} {{\begin{bmatrix} {r_{0}(n)} & {{\overset{\rightarrow}{r}}_{p - 1}^{T}(n)} \\ {{\overset{\rightarrow}{r}}_{p - 1}(n)} & {R_{p - 1}\left( {n - 1} \right)} \end{bmatrix}\begin{bmatrix} 1 \\ {- {{\overset{\rightarrow}{\omega}}_{p - 1}(n)}} \end{bmatrix}} = {\begin{bmatrix} {F(n)} \\ \overset{\rightarrow}{0} \end{bmatrix}.}} & (4.18) \end{matrix}$

The key to finding a fast solution is iterative update for the forward prediction filters. In order to do so, we need updates for R_(p−1)(n) and {right arrow over (r)}_(p−1)(n). The matrix R_(p−1)(n) can be written as $\begin{matrix} {{R_{p - 1}(n)} = \quad {{R_{p - 1}\left( {n - 1} \right)} + {\sum\limits_{i = 1}^{J}\left\lbrack {{{{\overset{\rightarrow}{x}}_{i,{p - 1}}(n)}{{\overset{\rightarrow}{x}}_{i,{p - 1}}^{T}(n)}} -} \right.}}} \\ \left. \quad {{{\overset{\rightarrow}{x}}_{i,{p - 1}}^{T}\left( {n - L} \right)}{{\overset{\rightarrow}{x}}_{i,{p - 1}}^{T}\left( {n - L} \right)}} \right\rbrack \\ {= \quad {{R_{p - 1}\left( {n - 1} \right)} + {{U_{p - 1}(n)}{{VU}_{p - 1}^{T}(n)}}}} \end{matrix}$

where $\begin{matrix} {{U_{p - 1}(n)} = \quad \left\lbrack {{{\overset{\rightarrow}{x}}_{1,{p - 1}}(n)}{{\overset{\rightarrow}{x}}_{2,{p - 1}}(n)}\quad \ldots \quad {{\overset{\rightarrow}{x}}_{J,{p - 1}}(n)}{{\overset{\rightarrow}{x}}_{1,{p - 1}}\left( {n - L} \right)}} \right.} \\ {\left. \quad {{{\overset{\rightarrow}{x}}_{2,{p - 1}}\left( {n - L} \right)}\quad \ldots \quad {{\overset{\rightarrow}{x}}_{J,{p - 1}}\left( {n - L} \right)}} \right\rbrack,} \\ {V = \quad {\begin{bmatrix} I_{j} & 0 \\ 0 & {- I_{j}} \end{bmatrix}.}} \end{matrix}$

Here, I_(J) is the J dimensional identity matrix and U_(p−1)(n) represents a p−1×2J dimensional matrix whose columns are the p−1 dimensional data vectors of all the channels at time instants n and n−L.

Using matrix inversion lemma (see Haykin reference), the update for the inverse of the corresponding matrix can be written as

R _(p−1) ⁻¹(n)=R _(p−1) ⁻¹(n−1)−R _(p−1) ⁻¹(n−1)U _(p−1)(n)[V+U _(p−1) ^(T)(n)R _(p−1) ⁻¹(n−1)U _(p−1)(n)]⁻¹

U _(p−1) ^(T)(n)R _(p−1) ⁻¹(n−1)=R _(p−1) ⁻¹(n−1)−k _(p−1)(n)U _(p−1) ^(T)(n)R _(p−1) ⁻¹(n−1)

where

k _(p−1)(n)=R _(p−1) ⁻¹(n−1)U _(p−1)(n)[V+U _(p−1) ^(T)(n)R _(p−1) ⁻¹(n−1)U _(p−1)(n)]⁻¹.

Here, k_(p−1)(n) is a p−1×2J matrix. From the above equation,

k _(p−1)(n)[V+U _(p−1) ^(T)(n)R _(p−1) ⁻¹(n−1)U _(p−1)(n)]=R _(p−1) ⁻¹(n−1)U _(p−1)(n)k _(p−1)(n)V=[R _(p−1) ⁻¹(n−

1)−k _(p−1)(n)U _(p−1) ^(T)(n)R _(p−1) ⁻¹(n−1)]U _(p−1)(n)k _(p−1)(n)=R _(p−1) ⁻¹(n)[U _(p−1)(n)V].

The update for {right arrow over (r)}_(p−1)(n) can be written as $\begin{matrix} {{{\overset{\rightarrow}{r}}_{p - 1}(n)} = \quad {{{\overset{\rightarrow}{r}}_{p - 1}\left( {n - 1} \right)} + {\sum\limits_{i = 1}^{J}{{x_{i}(n)}{{\overset{\rightarrow}{x}}_{1,{p - 1}}\left( {n - 1} \right)}}} -}} \\ {\quad {\sum\limits_{i = 1}^{J}{{x_{i}\left( {n - L} \right)}{{\overset{\rightarrow}{x}}_{1,{p - 1}}\left( {n - L - 1} \right)}}}} \\ {= \quad {{{\overset{\rightarrow}{r}}_{p - 1}\left( {n - 1} \right)} + {{U_{p - 1}\left( {n - 1} \right)}V{\overset{\rightarrow}{d}(n)}}}} \end{matrix}$

where ${\overset{\rightarrow}{d}(n)} = \begin{bmatrix} {x_{1}(n)} \\ {x_{2}(n)} \\ \ldots \\ {x_{J}(n)} \\ {x_{1}\left( {n - L} \right)} \\ {x_{2}\left( {n - L} \right)} \\ \ldots \\ {x_{J}\left( {n - L} \right)} \end{bmatrix}$

Now the update for the forward prediction filter can be written as $\begin{matrix} {{{\overset{\rightarrow}{\omega}}_{p - 1}(n)} = \quad {{R_{p - 1}^{- 1}\left( {n - 1} \right)}{{\overset{\rightarrow}{r}}_{p - 1}(n)}}} \\ {= \quad {{R_{p - 1}^{- 1}\left( {n - 1} \right)}\left\lbrack {{{\overset{\rightarrow}{r}}_{p - 1}\left( {n - 1} \right)} + {{U_{p - 1}\left( {n - 1} \right)}V\quad {\overset{\rightarrow}{d}(n)}}} \right\rbrack}} \\ {= \quad {{{R_{p - 1}^{- 1}\left( {n - 2} \right)}{{\overset{\rightarrow}{r}}_{p - 1}\left( {n - 1} \right)}} - {{k_{p - 1}\left( {n - 1} \right)}{U_{p - 1}^{T}\left( {n - 1} \right)}}}} \\ {\quad {{{R_{p - 1}^{- 1}\left( {n - 2} \right)}{{\overset{\rightarrow}{r}}_{p - 1}\left( {n - 1} \right)}} + {{k_{p - 1}\left( {n - 1} \right)}{\overset{\rightarrow}{d}(n)}}}} \\ {= \quad {{{\overset{\rightarrow}{\omega}}_{p - 1}\left( {n - 1} \right)} + {k_{p - 1}\left( {n - 1} \right)}}} \\ {\quad \left\lbrack {{\overset{\rightarrow}{d}(n)} - {{U_{p - 1}^{T}\left( {n - 1} \right)}{{\overset{\rightarrow}{\omega}}_{p - 1}\left( {n - 1} \right)}}} \right\rbrack} \\ {= \quad {{{\overset{\rightarrow}{\omega}}_{p - 1}\left( {n - 1} \right)} + {{k_{p - 1}\left( {n - 1} \right)}{\overset{\rightarrow}{\eta}(n)}}}} \end{matrix}$

where

{right arrow over (η)}(n)={right arrow over (d)}(n)−U _(p−1) ^(T)(n−1){right arrow over (ω)}_(p−1)(n−1).

The p−1 dimensional vector {right arrow over (η)}(n) is the so-called a-priori error or the innovation representing the error corresponding to the previously obtained prediction filter.

Let us now focus our attention on the update of the forward error F(n). Since r₀(n) in equation 4.17 can be written as $\begin{matrix} {{r_{0}(n)} = {{r_{0}\left( {n - 1} \right)} + {\sum\limits_{i = 1}^{J}{x_{i}(n)}^{2}} - {\sum\limits_{i = 1}^{J}{x_{i}\left( {n - L} \right)}^{2}}}} \\ {{= {{r_{0}\left( {n - 1} \right)} + {{{\overset{\rightarrow}{d}}^{T}(n)}V{\overset{\rightarrow}{d}(n)}}}},} \end{matrix}$

we have from equation 4.15, $\begin{matrix} {{F(n)} = \quad {{r_{0}\left( {n - 1} \right)} + {{{\overset{\rightarrow}{d}}^{T}(n)}V{\overset{\rightarrow}{d}(n)}} - {{\overset{\rightarrow}{r}}_{p - 1}^{T}(n)}}} \\ {\quad \left\lbrack {{{\overset{\rightarrow}{w}}_{p - 1}\left( {n - 1} \right)} + {{k_{p - 1}\left( {n - 1} \right)}{\overset{\rightarrow}{\eta}(n)}}} \right\rbrack} \\ {= \quad {{r_{0}\left( {n - 1} \right)} + {{{\overset{\rightarrow}{d}}^{T}(n)}V\quad {\overset{\rightarrow}{d}(n)}} - \left\lbrack {{{\overset{\rightarrow}{r}}_{p - 1}^{T}\left( {n - 1} \right)} + {{{\overset{\rightarrow}{d}}^{T}(n)}{{VU}_{p - 1}^{T}\left( {n - 1} \right)}}} \right\rbrack}} \\ {\quad {{{\overset{\rightarrow}{\omega}}_{p - 1}\left( {n - 1} \right)} - {{{\overset{\rightarrow}{r}}_{p - 1}^{T}(n)}{k_{p - 1}\left( {n - 1} \right)}{\overset{\rightarrow}{\eta}(n)}}}} \\ {= \quad {{F\left( {n - 1} \right)} + {{{\overset{\rightarrow}{d}}^{T}(n)}{V\left\lbrack {{\overset{\rightarrow}{d}(n)} - {{U_{p - 1}^{T}\left( {n - 1} \right)}{{\overset{\rightarrow}{\omega}}_{p - 1}\left( {n - 1} \right)}}} \right\rbrack}} -}} \\ {\quad {{{\overset{\rightarrow}{r}}_{p - 1}^{T}(n)}{k_{p - 1}\left( {n - 1} \right)}{\overset{\rightarrow}{\eta}(n)}}} \\ {= \quad {{F\left( {n - 1} \right)} + {\left\lbrack {{{{\overset{\rightarrow}{d}}^{T}(n)}V} - {{{\overset{\rightarrow}{r}}_{p - 1}^{T}(n)}{k_{p - 1}\left( {n - 1} \right)}}} \right\rbrack {\overset{\rightarrow}{\eta}(n)}}}} \\ {= \quad {{F\left( {n - 1} \right)} + {\left\lbrack {{{{\overset{\rightarrow}{d}}^{T}(n)}V} - {{{\overset{\rightarrow}{r}}_{p - 1}^{T}(n)}{R_{p - 1}^{- 1}\left( {n - 1} \right)}{U_{p - 1}\left( {n - 1} \right)}V}} \right\rbrack {\overset{\rightarrow}{\eta}(n)}}}} \\ {= \quad {{F\left( {n - 1} \right)} + {\left\lbrack {{{\overset{\rightarrow}{d}}^{T}(n)} - {{{\overset{\rightarrow}{\omega}}_{p - 1}^{T}(n)}{U_{p - 1}\left( {n - 1} \right)}}} \right\rbrack V\quad {\overset{\rightarrow}{\eta}(n)}}}} \\ {= \quad {{F\left( {n - 1} \right)} + {{{\overset{\rightarrow}{f}}^{T}(n)}V\quad {\overset{\rightarrow}{\eta}(n)}}}} \end{matrix}$

where

{right arrow over (f)}(n)={right arrow over (d)}(n)−U _(p−1) ^(T)(n−1){right arrow over (ω)}_(p−1)(n).

Here {right arrow over (f)}(n) represents the a posteriori error vector. Let us now summarize the update equations for the forward prediction filters. First calculate the a priori errors using

{right arrow over (η)}(n)={right arrow over (d)}(n)−U _(p−1) ^(T)(n−1){right arrow over (ω)}_(p−1)(n−1).

Then update the forward prediction filter

{right arrow over (ω)}_(p−1)(n)={right arrow over (ω)}_(p−1)(n−1)+k _(p−1)(n−1){right arrow over (η)}(n).

Now determine the a posteriori error

{right arrow over (f)}(n)={right arrow over (d)}(n)−U _(p−1) ^(T)(n−1){right arrow over (ω)}_(p−1)(n).

Finally, update the forward error

F(n)=F(n−1)+{right arrow over (f)}^(T)(n)V{right arrow over (η)}(n).

In the above equations, we need update equations for the gain matrix k_(p−1)(n−1). This will be done using the backward prediction filter.

The structure for the backward predictor is shown in FIG. 4(b). As in the case of forward predictors, the error in the i^(th) channel for the backward prediction filter {right arrow over (ν)}_(p−1)(n) at time instant n given by ${{\overset{\rightarrow}{v}}_{p - 1}(n)} = \begin{bmatrix} {v_{1}(n)} \\ {v_{2}(n)} \\ \ldots \\ {v_{p - 1}(n)} \end{bmatrix}$

 b _(i)(j)=x(j−p+1)−{right arrow over (ν)}_(p−1)(n)^(T) {right arrow over (x)} _(i,p−1)(j).  (4.19)

The predictor {right arrow over (ν)}_(p−1)(n) (a p−1×1 dimensional vector) is chosen in such a way that minimizes the error criterion ${J(n)} = {\sum\limits_{i = 1}^{J}\quad {\sum\limits_{k = 0}^{L - 1}\quad {{b_{1}^{2}\left( {n - k} \right)}.}}}$

Minimizing the above leads to the solution

{right arrow over (ν)}_(p−1)(n)=R _(p−1) ⁻¹(n){right arrow over (r)}′ _(p−1)(n)  (4.20)

where $\begin{matrix} \begin{matrix} {{{R_{p - 1}(n)} = {\sum\limits_{i = 1}^{J}\quad {\sum\limits_{k = 0}^{L - 1}\quad {{{\overset{\rightarrow}{x}}_{i,{p - 1}}\left( {n - k} \right)}{{\overset{\rightarrow}{x}}_{i,{p - 1}}^{T}\left( {n - k} \right)}}}}},} \\ {{{{\overset{\rightarrow}{r}}_{p - 1}^{\prime}(n)} = {\sum\limits_{i = 1}^{J}\quad {{\overset{\rightarrow}{r}}_{i,{p - 1}}^{\prime}(n)}}},} \\ {{{\overset{\rightarrow}{r}}_{i,{p - 1}}^{\prime}(n)} = {\sum\limits_{k = 0}^{L - 1}\quad {{x_{i}\left( {n - k - p + 1} \right)}{{{\overset{\rightarrow}{x}}_{i,{p - 1}}\left( {n - k} \right)}.}}}} \end{matrix} & (4.21) \end{matrix}$

The least squared error for this optimum backward filter can be written as (from equation 4.19)

B(n)=r ₀(n−p+1)−{right arrow over (r)}′ _(p−1) ^(T)(n){right arrow over (ν)}_(p−1)(n).  (4.22)

Equations 4.20 and 4.22 can be combined in the following matrix vector equation $\begin{matrix} {{\begin{bmatrix} {R_{p - 1}(n)} & {{\overset{\rightarrow}{r}}_{p - 1}(n)} \\ {{\overset{\rightarrow}{r}}_{p - 1}^{\prime T}(n)} & {r_{0}\left( {n - p + 1} \right)} \end{bmatrix}\begin{bmatrix} {- {{\overset{\rightarrow}{v}}_{p - 1}(n)}} \\ 1 \end{bmatrix}} = {\begin{bmatrix} \overset{\rightarrow}{0} \\ {B(n)} \end{bmatrix}.}} & (4.23) \end{matrix}$

Using exactly the same techniques as done for the forward prediction filter, update equations for the backward prediction filter, the corresponding a priori and a posteriori errors can be calculated using the following iterative equations. First, calculate the a priori errors using

{right arrow over (ν)}(n)={right arrow over (d)}(n−p+1)−U _(p−1) ^(T)(n){right arrow over (ν)}_(p−1)(n−1).

Then update the backward prediction filter

{right arrow over (ν)}_(p−1)(n)={right arrow over (ν)}_(p−1)(n−1)+k _(p−1)(n){right arrow over (ν)}(n).

Now determine the a posteriori error

{right arrow over (b)}(n)={right arrow over (d)}(n−p+1)−U _(p−1) ^(T)(n){right arrow over (ν)}_(p−1)(n).

Finally, update the backward error

B(n)=B(n−1)+{right arrow over (b)} ^(T)(n)V{right arrow over (ν)}(n).

Let us first note that the matrix R_(p)(n) is defined as $\begin{matrix} {{R_{p}(n)} = {\sum\limits_{i = 1}^{J}\quad {\sum\limits_{k = 0}^{L - 1}\quad {{{\overset{\rightarrow}{x}}_{i,p}\left( {n - k} \right)}{{\overset{\rightarrow}{x}}_{i,p}^{T}\left( {n - k} \right)}}}}} \\ {= \begin{bmatrix} {r_{0}(n)} & {{\overset{\rightarrow}{r}}_{p - 1}^{T}(n)} \\ {{\overset{\rightarrow}{r}}_{p - 1}(n)} & {R_{p - 1}\left( {n - 1} \right)} \end{bmatrix}} \\ {= {\begin{bmatrix} {R_{p - 1}(n)} & {{\overset{\rightarrow}{r}}_{p - 1}^{\prime}(n)} \\ {{\overset{\rightarrow}{r}}_{p - 1}^{\prime \quad T}(n)} & {r_{0}\left( {n - p + 1} \right)} \end{bmatrix}.}} \end{matrix}$

The inverse of this matrix can be written in terms of the forward and backward prediction filter parameters in the following way $\begin{matrix} \begin{matrix} {{R_{p}^{- 1}(n)} = \quad {\begin{bmatrix} 0 & {\overset{\rightarrow}{0}}^{T} \\ \overset{\rightarrow}{0} & {R_{p - 1}^{- 1}\left( {n - 1} \right)} \end{bmatrix} +}} \\ {\quad {{\frac{1}{F(n)}\begin{bmatrix} 1 \\ {- {{\overset{\rightarrow}{\omega}}_{p - 1}(n)}} \end{bmatrix}}\left\lbrack {1 - {{\overset{\rightarrow}{\omega}}_{p - 1}^{T}(n)}} \right\rbrack}} \end{matrix} & (4.24) \\ {\quad {= {\begin{bmatrix} {R_{p - 1}^{- 1}(n)} & \overset{\rightarrow}{0} \\ {\overset{\rightarrow}{0}}^{T} & 0 \end{bmatrix} + {{{\frac{1}{B(n)}\begin{bmatrix} {- {{\overset{\rightarrow}{\upsilon}}_{p - 1}(n)}} \\ 1 \end{bmatrix}}\left\lbrack {{- {{\overset{\rightarrow}{\upsilon}}_{p - 1}^{T}(n)}}1} \right\rbrack}.}}}} & (4.25) \end{matrix}$

The above can be easily verified by pre and post multiplying the above two expressions by R_(p)(n) and using equations 4.18 and 4.23 for the respective cases. Now let us define the p×2J dimensional matrix ${U_{p}(n)} = {\begin{bmatrix} {{\overset{\rightarrow}{d}}^{T}(n)} \\ {U_{p - 1}\left( {n - 1} \right)} \end{bmatrix} = {\begin{bmatrix} {U_{p - 1}(n)} \\ {{\overset{\rightarrow}{d}}^{T}\left( {n - p + 1} \right)} \end{bmatrix}.}}$

Also define

k _(p)(n)=R _(p) ⁻¹(n)U _(p)(n)V.

Then post multiplying equations 4.24 and 4.25 by U_(p)(n)V, we arrive at the following $\begin{matrix} {{k_{p}(n)} = \quad {\begin{bmatrix} {\overset{\rightarrow}{0}}^{T} \\ {k_{p - 1}\left( {n - 1} \right)} \end{bmatrix} + {{\frac{1}{F(n)}\begin{bmatrix} 1 \\ {- {{\overset{\rightarrow}{\omega}}_{p - 1}(n)}} \end{bmatrix}}{{\overset{\rightarrow}{f}}^{T}(n)}V}}} \\ {= \quad {\begin{bmatrix} {k_{p - 1}(n)} \\ {\overset{\rightarrow}{0}}^{T} \end{bmatrix} + {{\frac{1}{B(n)}\begin{bmatrix} {- {{\overset{\rightarrow}{\upsilon}}_{p - 1}(n)}} \\ 1 \end{bmatrix}}{{\overset{\rightarrow}{b}}^{T}(n)}V}}} \\ {= \quad {\begin{bmatrix} {k_{p - 1}(n)} \\ {\overset{\rightarrow}{0}}^{T} \end{bmatrix} + {{\frac{1}{B(n)}\left\lbrack {\begin{bmatrix} {- {{\overset{\rightarrow}{\upsilon}}_{p - 1}\left( {n - 1} \right)}} \\ 1 \end{bmatrix} - {\begin{bmatrix} {k_{p - 1}(n)} \\ {\overset{\rightarrow}{0}}^{T} \end{bmatrix}{\overset{\rightarrow}{\upsilon}(n)}}} \right\rbrack}{{\overset{\rightarrow}{b}}^{T}(n)}V}}} \\ {= \quad {{\begin{bmatrix} {k_{p - 1}(n)} \\ {\overset{\rightarrow}{0}}^{T} \end{bmatrix}\left( {I - {\frac{1}{B(n)}{\overset{\rightarrow}{\upsilon}(n)}{{\overset{\rightarrow}{b}}^{T}(n)}V}} \right)} +}} \\ {\quad {{\frac{1}{B(n)}\begin{bmatrix} {- {{\overset{\rightarrow}{\upsilon}}_{p - 1}\left( {n - 1} \right)}} \\ 1 \end{bmatrix}}{{\overset{\rightarrow}{b}}^{T}(n)}{V.}}} \end{matrix}$

Let us now define ${k_{p}(n)} = {\begin{bmatrix} {M(n)} \\ {{\overset{\rightarrow}{m}}^{T}(n)} \end{bmatrix}.}$

Then ${\overset{\rightarrow}{m}(n)} = {\frac{1}{B(n)}V\quad {\overset{\rightarrow}{b}(n)}}$

and $\begin{matrix} {{M(n)} = \quad {{k_{p - 1}(n)} - {{k_{p - 1}(n)}{\overset{\rightarrow}{\upsilon}(n)}{{\overset{\rightarrow}{m}}^{T}(n)}} - {{{\overset{\rightarrow}{v}}_{p - 1}\left( {n - 1} \right)}{{\overset{\rightarrow}{m}}^{T}(n)}}}} \\ {= \quad {{k_{p - 1}(n)} - {{{\overset{\rightarrow}{v}}_{p - 1}(n)}{{{\overset{\rightarrow}{m}}^{T}(n)}.}}}} \end{matrix}$

Thus, we have

k _(p−1)(n)=M(n)+{right arrow over (ν)}_(p−1)(n){right arrow over (m)}^(T)(n).

On the other hand, {right arrow over (ν)}_(p−1)(n) can be written as $\begin{matrix} {{{\overset{\rightarrow}{v}}_{p - 1}(n)} = \quad {{{\overset{\rightarrow}{v}}_{p - 1}\left( {n - 1} \right)} + {{k_{p - 1}(n)}{\overset{\rightarrow}{\upsilon}(n)}}}} \\ {{= \quad {{{\overset{\rightarrow}{v}}_{p - 1}\left( {n - 1} \right)} + {\left\lbrack {{M(n)} + {{{\overset{\rightarrow}{v}}_{p - 1}(n)}{{\overset{\rightarrow}{m}}^{T}(n)}}} \right\rbrack {\overset{\rightarrow}{\upsilon}(n)}}}},} \\ {{{\overset{\rightarrow}{v}}_{p - 1}(n)} = \quad {\frac{{{\overset{\rightarrow}{v}}_{p - 1}\left( {n - 1} \right)} + {{M(n)}{\overset{\rightarrow}{\upsilon}(n)}}}{1 - {{{\overset{\rightarrow}{m}}^{T}(n)}{\overset{\rightarrow}{\upsilon}(n)}}}.}} \end{matrix}$

Now we have derived all the equations required for updating the gain matrix k_(p−1)(n). The equations of interest are summarized below. Determine the matrix M(n) and the vector {right arrow over (m)}(n) using $\begin{matrix} {{k_{p}(n)} = {\begin{bmatrix} {\overset{\rightarrow}{0}}^{T} \\ {k_{p - 1}\left( {n - 1} \right)} \end{bmatrix} + {{\frac{1}{F(n)}\begin{bmatrix} 1 \\ {- {{\overset{\rightarrow}{\omega}}_{p - 1}(n)}} \end{bmatrix}}{{\overset{\rightarrow}{f}}^{T}(n)}V}}} \\ {= {\begin{bmatrix} {M(n)} \\ {{\overset{\rightarrow}{m}}^{T}(n)} \end{bmatrix}.}} \end{matrix}$

Then update the backward prediction filter using ${{\overset{\rightarrow}{v}}_{p - 1}(n)} = {\frac{{{\overset{\rightarrow}{v}}_{p - 1}\left( {n - 1} \right)} + {{M(n)}{\overset{\rightarrow}{\upsilon}(n)}}}{1 - {{{\overset{\rightarrow}{m}}^{T}(n)}{\overset{\rightarrow}{\upsilon}(n)}}}.}$

Finally, update the gain matrix k_(p−1)(n)

k _(p−1)(n)=M(n)+{right arrow over (ν)}_(p−1)(n){right arrow over (m)} ^(T)(n).

The previous analysis determines the iterative equations to update the forward and the backward prediction filters, the corresponding gain vectors and the forward and backward errors. We, however, still need to find fast update equations for the pre-filtering vectors {right arrow over (g)}_(i,p)(n) (see equation 3.6).

Let us first define the vector

{right arrow over (g)}′ _(i,p−1)(n)=R _(p−1) ⁻¹(n){right arrow over (e)} _(i,p−1)(n).

Then post-multiplying equations 4.24 and 4.25 by {right arrow over (e)}_(i,p)(n), we arrive at the following two recursions $\begin{matrix} {{{{\overset{\rightarrow}{g}}_{i,p}(n)} = {\begin{bmatrix} 0 \\ {\left( {1 - \mu} \right){{\overset{\rightarrow}{g}}_{i,{p - 1}}^{\prime}\left( {n - 1} \right)}} \end{bmatrix} + {{{\frac{1}{F(n)}\begin{bmatrix} 1 \\ {- {{\overset{\rightarrow}{\omega}}_{p - 1}(n)}} \end{bmatrix}}\left\lbrack {1 - {{\overset{\rightarrow}{\omega}}_{p - 1}^{T}(n)}} \right\rbrack}{{\overset{\rightarrow}{e}}_{i,p}(n)}}}},} \\ {{{\overset{\rightarrow}{g}}_{i,{p - 1}}^{\prime}(n)} = {{{\overset{\rightarrow}{g}}_{i,{p - 1}}(n)} - {{{\frac{1}{B(n)}\left\lbrack {- {{\overset{\rightarrow}{v}}_{p - 1}(n)}} \right\rbrack}\left\lbrack {{- {{\overset{\rightarrow}{v}}_{p - 1}^{T}(n)}}1} \right\rbrack}{{{\overset{\rightarrow}{e}}_{i,p}(n)}.}}}} \end{matrix}$

We have thus arrived at the required adaptation technique for fast multi-channel affine projection method for adaptive filtering. This technique is shown in Tables 3 and 4. Table 3 is essentially the same as Table 2 with the difference that the update of the pre-filtering vector, {right arrow over (g)}_(i,p)(n), in the proposed technique is done using forward and backward prediction filtering as shown in Table 3.

Let us know look at the number of MAC operations required for the equations in Table 4. The complexity of each equations 4.33, 4.34, 4.35, 4.37, 4.38, 4.40, 4.41, 4.43 and 4.44 is 2Jp, that of 4.39 is 2Jp+p and that for the rest is 2p. In addition, we need two divisions to calculate $\frac{1}{F(n)}$

and $\frac{1}{B(n)}$

and one division in equation 4.39. Hence, the total complexity for Table 4 is (20J+3)p plus three divisions. Combining with Table 3, the total complexity of the new technique is 2J²L+(J²+24J+3)p plus three divisions which is linear in both L and p.

TABLE 3 Proposed fast multi-channel affine projection algorithm Update auto-correlation vector: {right arrow over (r)}_(i,p−1)(n) = {right arrow over (r)}_(i,p−1)(n − 1) + x_(i)(n){right arrow over (x)}_(i,p−1)(n − 1) − (4.26) x_(i)(n − L){right arrow over (x)}_(i,p−1)(n − 1 − L) Update error vector: ${e_{i,1}(n)} = {{y_{i}(n)} - {\sum\limits_{j = 1}^{J}\left\lbrack {{{{\overset{\rightarrow}{r}}_{j,{p - 1}}^{T}(n)}{{\overset{\rightarrow}{s}}_{i,{p - 1}}(n)}} + {{{\overset{\rightarrow}{x}}_{j}^{T}(n)}{{\overset{\rightarrow}{z}}_{i,j}(n)}}} \right\rbrack}}$

(4.27) ${{\overset{\rightarrow}{e}}_{i,p}(n)} = \begin{bmatrix} {e_{i,1}(n)} \\ {\left( {1 - \mu} \right){{\overset{\rightarrow}{e}}_{i,{p - 1}}\left( {n - 1} \right)}} \end{bmatrix}$

(4.28) Update pre-filtering vector: Use Table 4 to update {right arrow over (g)}_(i,p)(n) ${{\overset{\rightarrow}{s}}_{i,p}(n)} = {\begin{bmatrix} 0 \\ {{\overset{\rightarrow}{s}}_{i,{p - 1}}\left( {n - 1} \right)} \end{bmatrix} + {\mu \quad {{\overset{\rightarrow}{g}}_{i,p}(n)}}}$

(4.29) Update approximation vector: {right arrow over (z)}_(i,j)(n + 1) = {right arrow over (z)}_(i,j)(n) + x_(j)(n − p + 1)s_(i,p)(n) (4.30) Here, s_(i,l)(n) = [s_(i,l)(n), s_(i,2)(n), . . ., s_(i,l)(n)]^(τ) (4.31) e_(i,l)(n) = [e_(i,1)(n), e_(i,2)(n), . . ., e_(i,l)(n)]^(τ) (4.32)

TABLE 4 Update forward prediction filter parameters: {right arrow over (η)}(n) = {right arrow over (d)}(n) − U_(p−1) ^(τ)(n − 1){right arrow over (ω)}_(p−1)(n − 1) (4.33) {right arrow over (ω)}_(p−1)(n) = {right arrow over (ω)}_(p−1)(n − 1) + k_(p−1)(n − 1){right arrow over (η)}(n) (4.34) {right arrow over (f)}(n) = {right arrow over (d)}(n) − U_(p−1) ^(τ)(n − 1){right arrow over (ω)}_(p−1)(n) (4.35) F(n) = F(n − 1) + {right arrow over (η)}^(τ)Vf(n) (4.36) Update gain matrix and backward prediction filter parameters: {right arrow over (ν)}(n) = {right arrow over (d)}(n − p + 1) − U_(p−1) ^(τ)(n){right arrow over (ν)}_(p−1)(n − 1) (4.37) $\begin{matrix} {{k_{p}(n)} = {\begin{bmatrix} {\overset{\rightarrow}{0}}^{T} \\ {k_{p - 1}\left( {n - 1} \right)} \end{bmatrix} + {{\frac{1}{F(n)}\begin{bmatrix} 1 \\ {- {{\overset{\rightarrow}{\omega}}_{p - 1}(n)}} \end{bmatrix}}{{\overset{\rightarrow}{f}}^{T}(n)}V}}} \\ {= \begin{bmatrix} {M(n)} \\ {\overset{\rightarrow}{m}(n)} \end{bmatrix}} \end{matrix}{}$

(4.38) ${{\overset{\rightarrow}{v}}_{p - 1}(n)} = \frac{{{\overset{\rightarrow}{v}}_{p - 1}\left( {n - 1} \right)} + {{M(n)}{{\overset{\rightarrow}{\upsilon}}^{T}(n)}}}{1 - {{{\overset{\rightarrow}{m}}^{T}(n)}{\overset{\rightarrow}{\upsilon}(n)}}}$

(4.39) k_(p−1)(n) = M(n) + {right arrow over (ν)}_(p−1)(n){right arrow over (m)}^(τ)(n) (4.40) {right arrow over (b)}(n) = {right arrow over (d)}(n − p + 1) − U_(p−1) ^(τ)(n){right arrow over (ν)}_(p−1)(n) (4.41) B(n) = B(n − 1) + {right arrow over (ν)}(n)V{right arrow over (b)}(n) (4.42) Update the pre-filtering vector $\begin{matrix} {{{\overset{\rightarrow}{g}}_{i,p}(n)} = \quad {\begin{bmatrix} 0 \\ {\left( {1 - \mu} \right){{\overset{\rightarrow}{g}}_{i,{p - 1}}^{\prime}\left( {n - 1} \right)}} \end{bmatrix} +}} \\ {\quad {{{\frac{1}{F(n)}\begin{bmatrix} 1 \\ {- {{\overset{\rightarrow}{\omega}}_{p - 1}(n)}} \end{bmatrix}}\left\lbrack {1 - {{\overset{\rightarrow}{\omega}}_{p - 1}^{T}(n)}} \right\rbrack}{{\overset{\rightarrow}{e}}_{i,p}(n)}}} \end{matrix}$

(4.43) ${{\overset{\rightarrow}{g}}_{i,{p - 1}}^{\prime}(n)} = {{{\overset{\rightarrow}{g}}_{i,{p - 1}}(n)} - {{{\frac{1}{B(n)}\quad\left\lbrack {- {{\overset{\rightarrow}{v}}_{p - 1}(n)}} \right\rbrack}\left\lbrack {{- {{\overset{\rightarrow}{v}}_{p - 1}^{T}(n)}}1} \right\rbrack}{{\overset{\rightarrow}{e}}_{i,p}(n)}}}$

(4.44)

Since the equations in Table 4 are highly recursive, they tend to propagate numerical errors. This can be severe for fixed point operations. One way to avoid numerical stability is to use periodic re-start. Periodic re-start is discussed in Gay et al. cited above. In this technique, the iterative technique in Table 4 is started periodically. The two set of iterations are run in parallel for L iterations After that, the old forward and backward prediction filter parameters are replaced by the new ones. This new iteration is continued until another re-start is carried out. Experiments have shown that this technique is extremely stable.

For clarity of explanation, the illustrative embodiments of the present invention are represented as comprising individual functional blocks. The functions of these blocks may be provided to the use of either shared or dedicated hardware and not limited to hardware capable of executing software. For example, the functions of the processors presented in the figures to follow may be provided by a single share processor. The term ‘processor’ should not be construed to refer exclusively to hardware capable executing software. The illustrative embodiments may comprise digital signal processor (DSP) into hardware such as Texas Instruments TMS320C54X fixed point DSP and if a floating point TI TMS320C3X, read only memory (ROM) restoring software for media operations, discussed below, and random access memory (RAM) for storing DSP results. Very large scale integration (VLSI) hardware embodiments as well as custom VLSI circuitry in combination with general purpose DSP circuit may also be provided.

Referring to FIG. 5, there is illustrated the adaptive filter system 20 between the input lines X₁(n)-X_(J)(n) and the error line e₁(n)-e_(J)(n). The filter system 20 provides an echo estimate signal for each channel to adders 35 ₁-35 _(J). The multi-channel input lines X₁(n)-X_(J)(n) from the transmit room 11 are coupled via D/A (digital to analog) converters 26 to the speakers 21 ₁-27 _(J) in the listening receiving room 21. The J microphones 23 ₁-23 _(J) pick up the input in the listening room and transmit them as outputs to the transmit room 11. The adaptive filter system 20 is coupled to the adders 35 ₁-35 _(J) to provide an echo estimate signal to cancel the echo signals picked up at the J microphones 23 ₁-23 _(J) from the speakers 27 ₁-23 _(J). The errors in the estimated cancellation signal are e₁(n)-e_(J)(n). The adaptive filter system 20 includes an adaptive filter output generator 101 coupled between the input lines X₁(n)-X_(J)J(n) and the adders (doing subtracting 35 ₁-35 _(J)). The adaptive filter generator 101 provides the echo estimate signals for each channel y₁(n)-y_(J)(n). The adaptive filter system 20 includes a forward and backward prediction filter parameter generator 103 coupled to the multi-channel input lines x₁(n)-X_(J)(n) to generate single forward prediction filter vector {right arrow over (ω)}_(p−1)(n); corresponding forward prediction error F(n); single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding backward prediction error B(n). The filter system 20 includes an error generator 109 for each channel coupled to each error line {right arrow over (e)}_(1,p)(n)-{right arrow over (e)}_(J,p)(n) carrying signals representing errors in the estimate signal. These estimated error signals are multiplied by constant 1-μ to produce error vectors e_(1,p)(n)-e_(J,p)(n). The constant μ is a value between 0 and 2 (usually between 0.3 and 1). A pre-filter signal generator 106 comprises generators 105 and 107. Generators 105 are also coupled to constant (1-μ) forward and backward generator 103 and error generator 109. Generators 105 (one for each channel) are responsive to the error vectors {right arrow over (e)}_(1,p)(n)-{right arrow over (e)}_(J,p)(n), the four outputs from forward and backward generator 103 of {right arrow over (ω)}_(p−1)(n), F(n), {right arrow over (ν)}_(p−1)(n) and B(n) at the constant 1-μ. The output from generator 105 is applied to generators 107 (one for each channel) along with a constant μ. The generators 107 are responsive to the output vectors {right arrow over (g)}_(1,p)(n)-{right arrow over (g)}_(J,p)(n) from generators 105 and μ to produce the last elements s_(1,p)(n)-s_(J,p)(n) and pre-filter vectors {right arrow over (s)}_(1,p−1)(n)-{right arrow over (s)}_(J,p−1)(n). The outputs from generator 107 are applied to the adaptive filter output generator 101.

Referring to FIG. 6, there is illustrated an {right arrow over (g)}_(i,p)(n) generator 105 (one for each channel) which implements equations 4.43 and 4.44 above. A circle with an “x” in the middle represents a multiplier and a plus represents an adder. The signals representing errors in the estimated signal vectors {right arrow over (e)}_(i,p)(n) from the generators 109 are multiplied by the single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) signal at multipliers 61 and summed at adders 63 and subtracted from e_(i,1)(n) at adder 65. The forward prediction error F(n) is inverted and is multiplied by the subtracted value signal from adder 65 producing g_(i,1)(n). The signal of value g_(i,1)(n) is multiplied by {right arrow over (ω)}_(p−1)(n) at multiplier 64 and provided at the negative input to adder 75. The signals representing error vectors {right arrow over (e)}_(i,p) from generators 109 are multiplied by the backward prediction filter vector signal {right arrow over (ν)}_(p−1)(n) at multipliers 62 and the results are summed at adders 66. The signal represented by {right arrow over (e)}_(i,p)(n) vector value is subtracted by the signal represented by summed value at adder 69. The subtracted output signal from adder 69 is multiplied by the signal representing backward error B(n) inverted at multiplier 70. The signals represented by the values at the output of multiplier 70 are multiplied by prediction filter vectors {right arrow over (ν)}₁(n)-{right arrow over (ν)}_(p−1)(n) at multipliers 72. The output from multiplier 72 is summed with the generator outputs g_(i,1)(n)-g_(i,p−1)(n) at adders 73. The output from adders 73 are delayed by one clock cycle by delay 74 producing g′_(i,1)(n−1)-g′_(1,p−1)(n−1). The delayed outputs are multiplied by fixed constant 1-μ at multipliers 76 and applied to adders 75 to be subtracted from the outputs from multipliers 64 to provide signal representing {right arrow over (g)}_(i,p)(n).

FIG. 7 illustrates an error vector generator 109 generating {right arrow over (e)}_(i,p)(n) that implements equation 4.28. The errors e_(i)(n) are multiplied at multiplier 77 to the 1-μ constant and delayed by one cycle delays 79 to produce vectors {right arrow over (e)}_(i,1)(n)-{right arrow over (e)}_(1,p)(n) as illustrated.

FIG. 8 illustrates a generator 107 generating {right arrow over (s)}_(i,p)(n) that implements equation 4.29. The outputs g_(i,1)(n)-g_(i,p)(n) from generators 105 are multiplied by value μ at the multipliers 81 and summed with previous cycle vectors (via one cycle delays 83) at adders 85 as shown. For example, s_(i,2)(n) is the sum of [g_(i,2)(n)]μ and [g_(i,1)(n)]μ delay one machine cycle by delay 83.

FIG. 9 receives the x₁(n)-x_(J)(n) inputs and all the outputs from the pre-filtering generator s_(i,p)(n) and generates the estimated system response implementing equations 4.26, 4.30 and part of 4.27. The adaptive filter output generator includes the auto-correlation vector {right arrow over (r)}_(i,p−1)(n) generator 91; the filter 93 with {right arrow over (Z)}_(i,j)(n) and update of {right arrow over (Z)}_(i,j)(n); and the product stages 95.

The auto-correlation vector r_(i,p−1)(n) signal generator 91 for the i^(th) channel is illustrated in FIG. 10 implementing equation 4.26. The i^(th) input signal x_(i)(n) is multiplied by the previous cycle delayed x_(i) ^(th) inputs using delays 201 and multipliers 203. The i^(th) channel signal delayed by L, x_(i)(n−L), is multiplied by the previous cycle delayed signal (by delays 205) at multipliers 207. The p−1 vectors from multipliers 203 are summed with the previous p−1 auto-correction vectors {right arrow over (r)}_(i,p−1)(n) via delay 208 at summer 209. The output at summer 209 is subtracted at summer 206 from the outputs from multipliers 207.

FIG. 11 illustrates the filter with {right arrow over (Z)}_(i,j)(n) and update of {right arrow over (Z)}_(i,j)(n) implementing equations 4.30 and part of 4.27. The s_(i,p)(n)-s_(J,p)(n), last element, from the pre-filter generator 107 are applied to update {right arrow over (Z)}_(i,1)(n) processors 113 (equation 4.30) providing with one cycle delay 115 updates of {right arrow over (Z)}_(i,j)(n) to filters 111 which receive the x_(j)(n) inputs. The outputs of filters 111 for each s_(i,p)(n) are summed at adders 117 to the filter 111 outputs from the previous line to produce signals U₁(n)-U_(J)(n).

FIG. 12 illustrates the filter 111 implementing part of equation 4.27 receive {right arrow over (Z)}_(i,j)(n) and multiplying that by the input signal X_(j)(n) and successive one cycle delays 121 at multipliers 123. The outputs from the multipliers are summed at adders 125.

FIG. 13 illustrates implementation of equation 4.30 at update of {right arrow over (Z)}_(i,j)(n). The signal X_(j)(n) is delayed by Z^(p−1) by delay 131 and thereafter delayed by one cycle delay 133 and the successive delayed outputs are multiplied at multipliers by the signal s_(i,p)(n) (the last element of the s_(i,p) generator). The multiplied output is summed successively at adders 137 to {right arrow over (Z)}_(i,j)(n).

FIG. 14 illustrates the forward and backward filter parameter generator 103 comprising both the forward prediction filter parameter generator 141 and backward prediction filter parameter generator 143. The generators 141 and 143 are coupled to receive the system inputs X₁(n)-X_(J)(n). The forward prediction generator 141 is responsible to the input signals from each channel and a gain matrix from the backward prediction generator 143 to generate a single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) signal and corresponding single forward prediction error F(n) signal and a-posteriori forward prediction error vector {right arrow over (f)}(n)V for all channels. The single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and the corresponding single forward error F(n) and a-posteriori forward prediction error {right arrow over (f)}(n)ν are applied to M(n) and {right arrow over (m)}(n) generator 145. The outputs M(n) and {right arrow over (m)}(n) from generator 145 are applied to the backward prediction filter parameter generator 143. The backward prediction filter parameter generator 143 is responsive to the input signals from each channel and output M(n) and {right arrow over (m)}(n)to generate a single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding single backward prediction error B(n) for all channels and an updated gain matrix. The generator 143 gain matrix k_(p−1)(n) is delayed one cycle by delay 147 to provide k_(p−1)(n−1) to the generator of M(n) and {right arrow over (m)}(n) and to the forward prediction filter parameter generator 141. The generator 103 implements equations 4.33 through 4.42.

FIG. 15 illustrates implementation of equations 4.33 through 4.36 in the forward prediction filter generator 141 to update the forward prediction filter parameters. The generator 141 includes the forward prediction filters 151 responsive to input channel signals X₁(n)-X_(J)(n) and one cycle delayed forward prediction filter vector {right arrow over (ω)}_(p−1)(n−1). The forward prediction filtering produces a set of prediction error signals η₁(n) . . . η_(2J)(n) that are rearranged as shown in FIG. 15 to generate a vector signal {right arrow over (η)}(n) that is input to matrix/vector multiplier 153. The first output of the J filters 151 is arranged sequentially followed by the second output of the same J filters is arranged sequentially. The other input of multiplier 153 is the delayed gain vector k_(p−1)(n−1) from the backward prediction parameter generator 143. The output of multiplier 153 is added to the one cycle delayed forward prediction vector {right arrow over (ω)}_(p−1)(n−1) at summer 155 to produce the updated forward filter vector {right arrow over (ω)}_(p−1)(n). The vector signal {right arrow over (ω)}_(p−1)(n) is also applied to forward prediction filters 157 to produce another set of error signals that are rearranged as shown in FIG. 15 to produce the vector {right arrow over (f)}(n) signal. This vector {right arrow over (f)}(n) signal is applied to Operation of V 158 to produce vector {right arrow over (f)}(n)V which is the a-posteriori forward prediction error vector signal. The output vector signals from the filters 151 and the a-posteriori prediction error vector are applied to DOT product 159 which outputs are summed with the previous cycle forward prediction error F(n) to produce the updated forward prediction error F(n).

FIG. 16 illustrates the forward prediction filtering responsive to the input X_(i)(n) and delayed X_(i)(n−L) and the forward prediction filtering vector {right arrow over (ω)}_(p−1) to produce two errors represented as o_(i)(n) (first of each) and o_(i+J)(n) (last ones). The input X_(i)(n) is successively delayed by one clock cycle and multiplied by the forward predictors {right arrow over (ω)}_(p−1) at multipliers 161. All of the outputs of the multipliers 161 are summed at adders 163. The output of the adders 163 is subtracted from input X_(i)(n) at adder 164 to produce the error O_(i)(n). Similarly, the delay input X_(i)(n−L) is successively delayed by one clock cycle and multiplied by forward prediction error {right arrow over (ω)}_(p−1) at multiplier 161 a. All of the outputs of the multipliers 161 a are summed at adders 163 a. The output of the adders 163 a is subtracted from the delayed input X_(i)(n−L) at adder 164 a to produce O_(i+J)(n).

FIG. 17 illustrates how Operation of V is performed by multiplying last half of the input vector {right arrow over (f)}(n) by −1 at multiplier 171 to produce signal {right arrow over (f)}(n)V.

The backward prediction filter parameter generator 143 implements equations 4.37, 4.38 then 4.42 as illustrated in FIG. 18. The inputs X₁(n)-X_(j)(n) and one cycled delayed backward prediction filter vector {right arrow over (ν)}_(p−1)(n−1) are applied to backward prediction filters 181 to produce a set of errors that are rearranged as shown in FIG. 18 to generate a vector signal {right arrow over (ψ)}(n). The first output of the J filters 181 is arranged sequentially followed by the second output of the same J filter 181 is arranged sequentially. The output vector {right arrow over (ψ)}(n) from filters 181 are applied to DOT product 184 and matrix/vector multiplier 182. The DOT product 184 also receives {right arrow over (m)}(n) and the result is subtracted from 1 at adder 186. The output of adder 186 is inverted and applied to scalar vector multiply 187. The (p−1) X2J dimensional matrix M(n) that is the output from generator 145 is multiplied by the vector {right arrow over (ψ)}(n) in multiplier 182. The output from multiplier 182 is summed with the one cycle delayed backward prediction filter vector {right arrow over (ν)}_(p−1)(n−1) at summer 185 and that sum is applied to the scalar vector multiply 187 to produce the updated backward prediction filter vector {right arrow over (ν)}_(p−1)(n) signal. The backward prediction filter vector {right arrow over (ν)}_(p−1)(n) signal is multiplied by vector {right arrow over (m)}(n) at the outer product 188. Outer product takes elements of the input vectors and multiplies them individually to produce a matrix output. The matrix output of outer product 188 is summed with M(n) at summer 189 to produce gain matrix of k_(p−1)(n). The inputs X₁(n)-X_(J)(n) and the updated backward prediction vector {right arrow over (ν)}_(p−1)(n) are applied to filter 183 to produce a set of errors that are rearranged as shown in FIG. 18 to generate {right arrow over (b)}(n). The vector {right arrow over (b)}(n) (2J lines) are applied to Operation of V 191 to multiply the last half of the vectors by −1 as illustrated in FIG. 17. The output of operation V 191 is applied with the vectors {right arrow over (ψ)}(n) from filters 181 at DOT product 193. The output of DOT product 193 is summed with the one cycle delayed backward prediction error B(n) to produce the updated backward prediction error B(n).

FIG. 19 illustrates the backward prediction filtering responsive to input x_(i)(n) and delayed X_(i)(n−L) and the backward prediction filtering vector to produce two errors represented as O_(i)(n) and O_(i+J)(n). The input X_(i)(n) is successively delayed by one clock cycle and multiplied by the backward predictor {right arrow over (ν)}_(p−1) at multipliers 230. All of the outputs of multipliers 230 are added at adders 231. The output of adders 231 is subtracted from the delayed input X_(i)(n−p+1) at addler 232 to produce the error O_(i)(n). Similarly, the delayed input X_(i)(n−L) is successively delayed and multiplied by the backward filter vector {right arrow over (ν)}_(p−1) at multipliers 230 a. All of the output of multipliers 230 a are added at adders 231 a. The output of adders 231 a is subtracted from the delayed input X_(i)(n−L−p+1) to produce the error output O_(i+J)(n).

FIG. 20 illustrates the generation of M(n) and {right arrow over (m)}(n). The inverted forward error F(n) is multiplied at multiplier 195 with the forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and the result is multiplied by −1 at multiplier 196. The output from the multiplier 196 together with the inverted F(n) produces a p dimensional vector that is input to outer product 197. The other input to the outer product is the a-posteriori error vector {right arrow over (f)}(n)V from generator 191. To the topmost row of k_(p−)(n−1) is added a zero row and this is summed at summer 198 to the output of outer product 197 to produce when separating out the bottom row, the matrix M(n) and the vector {right arrow over (m)}(n).

The simulation results for stereophonic acoustic echo cancellation in teleconferencing systems (a two-channel adaptive filtering system) like that disclosed in FIG. 1 follows. We collected stereo speech samples in our audio laboratory. The audio laboratory was used as the transmitting room. We had two speakers talking alternately in the room when two microphones were used to collect the data. The data were sampled at 16 kHz sampling rate. Since this stereo data is correlated, we used the technique in the system described in FIG. 1 and provisional application Ser. No. 09/076,575 filed Mar. 3, 1998 incorporated herein by reference. We simulated the receiving room loudspeaker outputs by convolving the stereo signals using the echo path responses ĥ₁₁ and ĥ₁₂. These two echo path responses were obtained using the image method of Allen et al. (“Image Method for Efficiently Simulating Small-Room Acoustics,” J. Acoust. Soc. Am., Vol. 65, No.4, pp. 943-950, April 1979) based on room measurements of one of our conference rooms. The microphone output in the receiving room was simulated by summing up the outputs of these two convolutions. In the above convolutions, we restricted the lengths of the echo path responses to be N=4096 samples long. We then used the two adaptive filters h₁₁ and h₁₂ each of length L=2048 samples, to identify these echo path responses using the technique discussed in this paper. FIG. 5 shows the misalignment in dB with time for different projection order p=1 (NLMS), 4 and 8. The misalignment is defined as $10*\log_{10}\quad \frac{{{{\hat{h}}_{11,{1:2048}} - h_{11}}}_{2}^{2} + {{{\hat{h}}_{12,{1:2048}} - h_{12}}}_{2}^{2}}{{{\hat{h}}_{11,{1:2048}}}_{2}^{2} + {{\hat{h}}_{12,{1:2048}}}_{2}^{2}}$

where, the subscript 1:2048 is used to indicate that the first 2048 samples of the corresponding echo path responses have been used here. The improvement of performance with increasing projection order (with only nominal increase in computational complexity) is clearly visible from FIG. 21.

In this application, we have described a novel fast technique for multi-channel adaptive filtering using the affine projection algorithms. The fast version is obtained by defining a new structure for multi-channel forward and backward predictors that allows fast inversion of the sum of auto-correlation matrices of the inputs of the different channels. The fast technique developed here allows fast convergence and lower mean squared error with little increase in computational complexity. Further, the trade-off between complexity and performance can be controlled by the parameter, ‘projection order’. Because of computational complexity of the earlier techniques, a value of p greater than 4 is rarely used. The new technique would allow much higher value of p probably up to 64 in practical systems. 

What is claimed is:
 1. A multi-channel adaptive filter system for generating an estimated signal for each channel based on multi-channel signals x₁(n)-x_(J)(n), the filter system comprising: a forward and backward prediction filter generator responsive to said multi-channel signals x₁(n)-x_(J)(n) for generating a single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and corresponding single forward error F(n) for all channels and a single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding single backward error B(n); an error generator for each channel responsive to errors in the estimated signal for multiplying said errors by 1-μ, where μ is an adaptation constant for generating error vectors for each channel; a pre-filter signal generator for each channel coupled to said forward and backward prediction filter generator and said error generator and responsive to said single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and corresponding single forward error F(n) and said single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding single backward error and said error vectors for each channel for generating pre-filtering coefficients; and an adaptive filter output generator coupled to said pre-filter generator and said multi-channel signals x₁(n)-x_(J)(n) for generating an estimate signal for each channel.
 2. The multi-channel adaptive filter of claim 1 wherein said pre-filtering coefficients are partitioned into two groups with a first group consisting of all except the last pre-filtering coefficients and a second group consisting of the last pre-filtering coefficients.
 3. The multi-channel adaptive filter system of claim 1 wherein said forward and backward prediction filter generator comprises a forward prediction filter parameter generator and a separate backward prediction filter generator responsive to said input signals X1(n)-XJ(n) from each channel and a gain matrix from said backward prediction filter generator for generating said single forward prediction filter vector ω_(p−1)(n) and corresponding forward error F(n) and an a-posteriori error vector {right arrow over (f)}(n)V.
 4. The multi-channel adaptive filter system of claim 3 wherein said backward prediction filter generator is responsive to said input signal, said single forward prediction vector {right arrow over (ω)}_(p−1)(n) and corresponding forward error F(n) and an a-posteriori error vector for generating a single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding backward prediction error and an updated gain matrix.
 5. In a communications system having a plurality of microphones at a transmitting location transmitting over separate corresponding plurality of channels to corresponding speakers in a receiving location and a plurality of microphones at the receiving location coupled over corresponding plurality of channels to speakers at the transmitting location generating echo signals, a multi-channel acoustic cancellation system comprising: filter means coupled to output of said plurality of microphones at said transmitting location and input to said plurality of speakers at receiving location for providing estimated signals representing estimates of echo path responses from said plurality microphones from said receiving location to said plurality of speakers at said transmitting location; said filter means comprising: a forward and backward prediction filter generator responsive to said multi-channel signals x₁(n)-x_(J)(n) for generating a single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and corresponding single forward error F(n) for all channels and a single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding single backward error B(n); an error generator for each channel responsive to errors in the estimated signal for multiplying said errors by 1-μ, where μ is an adaptation constant for generating error vectors for each channel; a pre-filter signal generator for each channel coupled to said forward and backward prediction filter generator and said error generator and responsive to said single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and corresponding single forward error F(n) and said single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding single backward error and said error vectors for each channel for generating pre-filtering coefficients; and an adaptive filter output generator coupled to said pre-filter generator and said multi-channel signals x₁(n)-x_(J)(n) for generating an echo estimate signal for each channel; means coupled to input of said plurality of speakers at said transmitting location and output of said microphones at said receiving location for providing true signals representing true echo signal; means for subtracting said true signals from said estimated signals to reduce echo signals and to obtain coefficient control signals representing errors; and means for coupling said coefficient control signals to said filter means to change the filter coefficients to minimize said errors.
 6. The multi-channel adaptive filter system of claim 5 wherein said pre-filtering coefficients are partitioned into two groups with a final group consisting of all except the last pre-filtering coefficients and the second group consisting of the last pre-filtering coefficients.
 7. The multi-channel adaptive filter system of claim 5 wherein said forward and backward prediction filter generator comprises a forward prediction filter parameter generator and a separate backward prediction filter generator that is responsive to said input signals X1(n)-XJ(n) from each channel and a gain matrix from said backward prediction filter generator for generating said single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and corresponding single forward error F(n) and an a-posteriori error vector {right arrow over (f)}(n)V.
 8. The multi-channel adaptive filter system of claim 5 wherein said backward prediction filter generator is responsive to said input signal, said single forward prediction vector {right arrow over (ω)}_(p−1)(n) and corresponding forward error F(n) and an a-posteriori error vector for generating a single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding backward prediction error and an updated gain matrix.
 9. A communications system having a plurality of microphones at a transmitting location transmitting over separate corresponding plurality of channels to corresponding speakers in a receiving location and a plurality of microphones at the receiving location coupled over corresponding plurality of channels to speakers at the transmitting location generating echo signals, a multi-channel acoustic cancellation system comprising: filter means coupled to output of said plurality of microphones at said transmitting location and input to said plurality of speakers at receiving location for providing estimated signals representing estimates of echo path responses from said plurality microphones from said receiving location to said plurality of speakers at said transmitting location; said filter means comprising: a forward and backward prediction filter generator responsive to said multi-channel signals x₁(n)-x_(J)(n) for generating a single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and corresponding single forward error F(n) for all channels and a single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding single backward error B(n); an error generator for each channel responsive to errors in the estimated signal for multiplying said errors by 1-μ, where μ is an adaptation constant for generating error vectors for each channel; a pre-filter signal generator for each channel coupled to said forward and backward prediction filter generator and said error generator and responsive to said single forward prediction filter vector {right arrow over (ω)}_(p−1)(n) and corresponding single forward error F(n) and said single backward prediction filter vector {right arrow over (ν)}_(p−1)(n) and corresponding single backward error and said error vectors for each channel for generating pre-filtering coefficients; and an adaptive filter output generator coupled to said pre-filter generator and said multi-channel signals x₁(n)-x_(J)(n) for generating an echo estimate signal for each channel; means coupled to input of said plurality of speakers at said transmitting location and output of said microphones at said receiving location for providing true signals representing true echo signal; means for subtracting said true signals from said estimated signals to reduce echo signals and to obtain coefficient control signals representing errors; and means for coupling said coefficient control signals to said filter means to change the filter coefficients to minimize said errors. 